function LpRule() {

    var p_sRuleName;
    var p_mCalcSet = ["calc_word_count"];
    var p_iCurrentCalc = 0;

    return {

        getRuleName: function () {
            return p_sRuleName;
        },

        setRuleName: function (sRuleName) {
            p_sRuleName = sRuleName;
            return this;
        },

        getCalcSet: function () {
            return p_mCalcSet;
        },

        setCalcSet: function (mCalcSet) {
            p_mCalcSet = mCalcSet;
            return this;
        },

        getCurrentCalc: function () {
            return p_mCalcSet[p_iCurrentCalc];
        },

        setCurrentCalc: function (iCurrentCalc) {
            p_iCurrentCalc = iCurrentCalc;
            return this;
        },

        /**
         * Convert sLogs to aLogs logic of the rule
         * @param {*} sLogs 
         */
        fnSplitEntry: function (sLogs) {
            var aLogs = sLogs.split("\n");
            return aLogs
        },

        fnPaserLine: function (sLog, oContext) {
            var aToken = sLog.split(" ");
            var oResult = {
                key: aToken[0]
            };
            return oResult;
        },

        fnCalc: function (sCalcName, entry) {
            return {
                key: entry.key,
                value: 1
            }
        }
    };
}

module.exports = LpRule;